home *** CD-ROM | disk | FTP | other *** search
/ Complete Linux / Complete Linux.iso / docs / apps / database / ingres04.lzh / source / ctlmod / ctlmod.h < prev    next >
Encoding:
C/C++ Source or Header  |  1985-03-06  |  3.3 KB  |  124 lines

  1. /*
  2. **  CTLMOD.H -- control module header file
  3. **
  4. **    This header file defines all the internal data structures
  5. **    used by the control module.
  6. **
  7. **    If something other than the control module or the initializer
  8. **    has to include this, something is wrong!
  9. **
  10. **    Compilation Flags:
  11. **        xCM_DEBUG -- if set, certain code is compiled in that
  12. **            does consistancy checks on the data structures
  13. **            at opportune times.
  14. **        xMONITOR -- if set, turns on performance evaluation
  15. **            code.
  16. **        xCTR1, xCTR2, xCTR3 -- if set, turns on various levels
  17. **            of trace information.  These must be properly
  18. **            nested; if xCTR2 is set, xCTR1 *MUST* be set.
  19. **
  20. **    Version:
  21. **        @(#)ctlmod.h    8.1    12/31/84
  22. */
  23.  
  24.  
  25.  
  26.  
  27.  
  28.  
  29. /* include some other files */
  30. # include    "state.h"
  31. # include    "proc.h"
  32. # include    <pv.h>
  33. # include    "pipes.h"
  34. # include    <func.h>
  35. # include    <pmon.h>
  36. # include    <setjmp.h>
  37.  
  38. /* basic constants */
  39. # include    <useful.h>
  40.  
  41.  
  42. /*
  43. **  Trace Flag settings.
  44. */
  45.  
  46. # include    <trace.h>
  47. # define    xCTR1        1
  48. # define    xCTR2        1
  49. # define    xCTR3        1
  50. # define    xCM_DEBUG    1
  51. # define    xMONITOR    1
  52.  
  53. /*
  54. **  STRUCT CM -- the configuration structure.
  55. */
  56.  
  57. struct _cm_t
  58. {
  59.     char    cm_myname[12];        /* my process name */
  60.     state_t    cm_state[CM_MAXST];    /* the state descriptions */
  61.     proc_t    cm_proc[CM_MAXPROC];    /* the process descriptions */
  62.     int    cm_myproc;        /* my process id */
  63.     char    cm_input;        /* the current input file */
  64.     char    cm_rinput;        /* the reset input file */
  65. };
  66.  
  67. /*
  68. **  STRUCT CTX -- the context structure.
  69. **
  70. **    There is one of these around for every currently known
  71. **    context.  There is a pipe block associated with the
  72. **    context, defined in call() or main(); only a pointer
  73. **    is kept here so that the pipe block can be more efficiently
  74. **    allocated off the stack.
  75. **
  76. **    Some of the fields describe the NEXT block in the sequence.
  77. **    These are: ctx_size, ctx_link.
  78. **
  79. **    Ctx_cmark is useful ONLY when this block is not currently
  80. **    active.
  81. **
  82. **    Ctx_qt should be of type 'struct qthdr *'; it is 'char *' to
  83. **    avoid including qtree.h.  It points to the saved query
  84. **    tree header after the first qt is read in.
  85. **
  86. **    Ctx_pv MUST be last.
  87. */
  88.  
  89. typedef struct _ctx_t
  90. {
  91.     char        *ctx_name;    /* the printname of this proc */
  92.     pb_t        *ctx_ppb;    /* the pb associated w/ this ctx */
  93.     short        *ctx_tvect;    /* the trace vect for this ctx */
  94.     int        (*ctx_errfn)();    /* the error handling function */
  95.     char        *ctx_qt;    /* pointer to saved Qt struct */
  96.     struct fn_def    *ctx_fn;    /* pointer to fn descriptor */
  97.     char        *ctx_glob;    /* ptr to saved global area */
  98.     struct _ctx_t    *ctx_link;    /* a link to the next ctx */
  99.     struct monitor    *ctx_mon;    /* ptr to monitor struct */
  100.     short        ctx_size;    /* the size of the next ctx */
  101.     bool        ctx_init;    /* set if between initp & call */
  102.     bool        ctx_new;    /* set if this is a new context */
  103.     char        ctx_resp;    /* process to respond to */
  104.     int        ctx_cmark;    /* the Qbuf context mark */
  105.     int        ctx_pmark;    /* the Qbuf parameter mark */
  106.     jmp_buf        ctx_jbuf;    /* longjmp point on fatal error */
  107.     long        ctx_ofiles;    /* files that should be kept open */
  108.     int        ctx_pc;        /* the parm count */
  109.     PARM        ctx_pv[PV_MAXPC+1];    /* the parm vector */
  110. }  ctx_t;
  111.  
  112. extern ctx_t    Ctx;        /* the current context */
  113. extern char    Qbuf[];        /* the free space buffer */
  114. extern int    QbufSize;    /* the size of Qbuf */
  115. extern struct _cm_t    Cm;    /* the system configuration */
  116. extern int    Syncs[CM_MAXPROC];    /* the number of SYNCs expected */
  117.  
  118.  
  119. /*
  120. **  ERROR NUMBERS
  121. */
  122.  
  123. # define    ERR_QBUF    100    /* Qbuf overflow */
  124.